package com.briup.bookstore.common.response;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 统一维护响应结果状态码以及响应消息的关系，
 * 主要是维护对于程序中可能存在的业务的失败原因描述
 */
@Getter
@RequiredArgsConstructor
public enum ResultCode {

    // 成功的响应
    SUCCESS(200, "操作成功"),

    // 业务原因导致的失败
    // 参数相关的异常
    PARAMETER_IS_INVALID(10001, "该参数不合法"),
    PARAMETER_IS_BLANK(10002, "该参数不能为空"),
    BEAN_CONVERT_ERROR(10003, "对象转换异常"),

    // 用户方面业务的问题
    USER_IS_NOT_EXISTS(20001, "该用户不存在"),
    USERNAME_IS_BLACK(20002, "用户名不能为空"),
    PASSWORD_IS_BLACK(20003, "用户名不能为空"),
    USER_IS_EXISTS(20004, "该用户已经存在"),
    TOKEN_IS_TIMEOUT(20005, "当前登录状态已超时，请重新登录"),
    TOKEN_IS_INVALID(20006, "当前登录状态不合法，请重新登录"),
    TOKEN_IS_MISSING(20007, "当前未登录，请前往登录"),
    USER_STATUS_IS_FORBIDDEN(20008, "当前用户状态不可用，请联系管理员处理！"),
    PASSWORD_IS_ERROR(20009, "密码输入有误，请检查后重新输入"),

    // 图书方面业务的问题
    BOOK_IS_NOT_EXISTS(30001, "该图书不存在"),
    ORDER_SHOPCAR_NOT_EXIST(30002, "订单中包含的购物车商品不存在"),
    BOOK_STORE_NOT_ENOUGH(30003, "当前图书库存不足，无法新增订单"),
    ORDER_ERROR(30004, "订单中包含的购物车商品数量有误，无法新增订单"),
    ORDER_NOT_EXIST(30005, "该订单不存在"),
    ORDER_STATUS_ERROR(30006, "当前订单状态不支持该操作"),

    ALIPAY_PAY_ERROR(40001, "支付宝支付失败，请联系管理员处理"),


    INNER_SERVER_ERROR(500, "服务器内部异常，请联系管理员处理");

    private final int code;
    private final String message;
}
